Cas v sestave Sinea
Otázka od: Roman
19. 9. 2002 20:03
Ahoj,
mam sestavu plnenou daty v OnGetData a potreboval bych pouzit nasledujici
funkci:
IIF(#CAS<'12:00','true','false')
#CAS je ve formatu 'hh:nn'. Funkce vsak vraci vzdy 'true', i kdyz je #CAS
vetsi nez '12:00', kde delam chybu?
K cemu je event OnGetDataType? Nikde v dokumentaci jsem na nej nenarazil...
Roman
- - - - - - - - - - - - - - - - - - - - -
http://kouzelne.misto.cz/
Odpovedá: Roland Turcan
19. 9. 2002 22:27
<<< 19. 9. 2002 22:39 - Roman "sw.maurice@seznam.cz" >>>
R> mam sestavu plnenou daty v OnGetData a potreboval bych pouzit nasledujici
R> funkci:
R> IIF(#CAS<'12:00','true','false')
Mam taky pocit, ze IIF spracuva a vyhodnocuje ako text. Ale sa mylim ?
--
Best regards, TRoland
http://www.rotursoft.sk
Odpovedá: Roman
20. 9. 2002 7:19
> <<< 19. 9. 2002 22:39 - Roman "sw.maurice@seznam.cz" >>>
> R> mam sestavu plnenou daty v OnGetData a potreboval bych pouzit
nasledujici
> R> funkci:
> R> IIF(#CAS<'12:00','true','false')
>
> Mam taky pocit, ze IIF spracuva a vyhodnocuje ako text. Ale sa mylim ?
Mno, ja zkousel '16:00'<'12:00' a to vrati 'false', pro '8:00'<'12:00' to
vrati 'true', ale kdyz tam dam hodnotu z polozky, tak nastane ten problem.
:-/
Roman
==============================
http://kouzelne.misto.cz
Odpovedá: Vaclav Krmela
20. 9. 2002 7:34
> From: Roman
>
> mam sestavu plnenou daty v OnGetData a potreboval bych
> pouzit nasledujici funkci:
> IIF(#CAS<'12:00','true','false')
> #CAS je ve formatu 'hh:nn'. Funkce vsak vraci vzdy 'true',
> i kdyz je #CAS vetsi nez '12:00', kde delam chybu?
Operator < lze v uzivatelskych funkcich aplikovat pouze
na ciselne polozky.
Retezce je mozne porovnavat pouze pomoci operatoru
= a <>.
Je tedy potreba puvodne textovy udaj prevest na cislo,
napriklad:
IIF(LTRIM(LEFT(#CAS,2)+RIGHT(#CAS,2))<1200,'true','false')
> K cemu je event OnGetDataType?
Pokud jsou data do generatoru sestav posilana
v udalosti OnGetData, jsou vsechny polozky
interpretovany jako polozky typu ftString.
To muze nekdy vadit, napriklad pri vyhodnocovani
funkci. Pomoci udalosti OnGetDataType
lze urcit jakeho typu ma ktera polozka byt.
Lze to pouzit i ke zmene typu polozky
ze skutecnych datovych zdroju.
Vaclav Krmela
Odpovedá: Roman
20. 9. 2002 15:23
> > K cemu je event OnGetDataType?
>
> Pokud jsou data do generatoru sestav posilana
> v udalosti OnGetData, jsou vsechny polozky
> interpretovany jako polozky typu ftString.
> To muze nekdy vadit, napriklad pri vyhodnocovani
> funkci. Pomoci udalosti OnGetDataType
> lze urcit jakeho typu ma ktera polozka byt.
> Lze to pouzit i ke zmene typu polozky
> ze skutecnych datovych zdroju.
Aha, a ten treti var parametr je promenna typu TFieldTypeS, jake hodnoty
muze nabyvat?
Dik za odpovedi.
Roman
==============================
http://kouzelne.misto.cz
Odpovedá: Vaclav Krmela
20. 9. 2002 14:38
> From: Roman
>
> > > K cemu je event OnGetDataType?
> >
> > Pokud jsou data do generatoru sestav posilana
> > v udalosti OnGetData, jsou vsechny polozky
> > interpretovany jako polozky typu ftString.
> > To muze nekdy vadit, napriklad pri vyhodnocovani
> > funkci. Pomoci udalosti OnGetDataType
> > lze urcit jakeho typu ma ktera polozka byt.
> > Lze to pouzit i ke zmene typu polozky
> > ze skutecnych datovych zdroju.
>
> Aha, a ten treti var parametr je promenna typu TFieldTypeS,
> jake hodnoty muze nabyvat?
Do uses je treba pridat sest_typ, kde je
TFieldTypeS = (ftsUnknown, ftsString, ftsSmallint, ftsInteger,
ftsWord,
ftsBoolean, ftsFloat, ftsCurrency, ftsBCD, ftsDate, ftsTime,
ftsDateTime,
ftsBytes, ftsVarBytes, ftsAutoInc, ftsBlob, ftsMemo, ftsGraphic,
ftsFmtMemo,
ftsParadoxOle, ftsDBaseOle, ftsTypedBinary, ftsCursor, ftsFixedChar,
ftsWideString,
ftsLargeint, ftsADT, ftsArray, ftsReference, ftsDataSet, ftsOraBlob,
ftsOraClob,
ftsVariant, ftsInterface, ftsIDispatch, ftsGuid, ftsTimeStamp,
ftsFMTBcd);
Jsou to vsechny ftXXX z Delphi 6 prejmenovane na ftsXXX.
Toto prejmenovani se jiz v soucasne dobe jevi zbytecne.
Pochazi ale z doby, kdy nebylo mozne jinym zpusobem
oddelit generator sestav od BDE.
Vaclav Krmela